home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-09-30 | 46.3 KB | 1,865 lines |
- Newsgroups: comp.sources.misc
- subject: v08i081: libhoward portability library, part 3 of 9
- from: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
- Reply-To: howard@dahlbeck.ericsson.se (Howard Gayle)
-
- Posting-number: Volume 8, Issue 81
- Submitted-by: howard@dahlbeck.ericsson.se (Howard Gayle)
- Archive-name: libhoward/part03
-
- #! /bin/sh
- # This is a shell archive. Remove anything before this line, then feed it
- # into a shell via "sh file" or similar. To overwrite existing files,
- # type "sh file -c".
- # The tool that generated this appeared in the comp.sources.unix newsgroup;
- # send mail to comp-sources-unix@uunet.uu.net if you want that tool.
- # If this archive is complete, you will see the following message at the end:
- # "End of archive 3 (of 9)."
- # Contents: FREEZE Makefile a2l.c getlic.c malf.3 mk-smp.c new-Make.b
- # strspn.c
- # Wrapped by howard@hasse on Mon Sep 25 07:08:06 1989
- PATH=/bin:/usr/bin:/usr/ucb ; export PATH
- if test -f 'FREEZE' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'FREEZE'\"
- else
- echo shar: Extracting \"'FREEZE'\" \(5524 characters\)
- sed "s/^X//" >'FREEZE' <<'END_OF_FILE'
- X$Header: FREEZE,v 1.7 89/09/25 07:03:19 howard Exp $
- X$Log: FREEZE,v $
- X# Revision 1.7 89/09/25 07:03:19 howard
- X# *** empty log message ***
- X#
- X# Revision 1.6 89/09/23 14:24:24 howard
- X# *** empty log message ***
- X#
- X# Revision 1.5 89/09/19 09:09:46 howard
- X# *** empty log message ***
- X#
- X# Revision 1.4 89/08/29 17:19:00 howard
- X# *** empty log message ***
- X#
- X# Revision 1.3 89/08/11 14:52:36 howard
- X# *** empty log message ***
- X#
- X========================================
- XFREEZE.c 1.1 1989-08-05 08:46:25
- XMakeCommon 1.3 1989-09-22 13:46:45
- XMakefile 1.24 1989-09-23 15:23:28
- XREADME 1.3 1989-09-23 15:25:11
- Xa2.3 1.2 1989-08-10 13:53:23
- Xa2.h 1.4 1989-06-22 15:11:58
- Xa2d.c 1.7 1989-08-09 18:13:20
- Xa2i.c 1.7 1989-08-10 13:02:15
- Xa2l.c 1.12 1989-08-11 13:07:15
- Xa2smp.c 1.11 1989-08-15 13:33:10
- Xa2u.c 1.6 1989-08-11 14:08:33
- Xa2ul.c 1.7 1989-08-11 14:17:25
- Xb.bib 1.1 1989-09-20 12:35:29
- Xcat-path.1 1.1 1989-09-21 10:52:02
- Xcat-path.b 1.1 1989-09-21 08:01:10
- Xcia.1 1.1 1989-09-23 14:11:22
- Xcia.b 1.3 1989-09-23 14:06:03
- Xcopy-self.1 1.2 1989-09-20 13:58:12
- Xcopy-self.b 1.5 1989-09-21 07:18:17
- Xfreeze.1 1.1 1989-09-23 14:22:28
- Xfreeze.b 1.8 1989-09-21 19:21:19
- Xfreeze0.b 1.6 1989-09-21 19:21:28
- XfreezePch.1 1.2 1989-09-25 07:01:32
- XfreezePch.b 1.2 1989-09-25 07:01:13
- XfreezePch0.b 1.1 1989-09-23 10:39:47
- Xgetlic.c 1.5 1989-08-09 09:46:01
- Xgetlin.3 1.7 1989-07-05 07:31:35
- Xgetlin.c 1.7 1989-08-09 09:46:03
- Xgetopt.c 1.1 1989-08-29 17:16:53
- Xgetpwf.3 1.2 1989-08-21 08:43:59
- Xgetpwf.c 1.2 1989-08-20 11:05:20
- Xgold-lt.tex 1.2 1989-08-28 19:02:50
- Xhetero.tex 1.2 1989-09-20 13:03:18
- Xlatin-lt.tex 1.3 1989-09-19 12:04:12
- XlnR.1 1.2 1989-09-15 11:45:47
- XlnR.b 1.3 1989-09-21 19:22:13
- XlnR0.b 1.4 1989-09-21 19:22:16
- Xma2d.c 1.6 1989-08-12 08:58:22
- Xma2i.c 1.6 1989-08-12 09:10:44
- Xma2l.c 1.3 1989-08-12 09:22:39
- Xma2u.c 1.4 1989-08-12 09:37:32
- Xma2ul.c 1.3 1989-08-12 09:56:17
- Xmalf.3 1.11 1989-08-14 09:06:30
- Xmalf.c 1.10 1989-08-21 17:50:36
- Xmalf.h 1.18 1989-08-20 10:45:05
- Xmalf0.c 1.11 1989-08-21 17:50:47
- Xmalf1.c 1.8 1989-08-21 17:50:50
- Xmcalloc.c 1.5 1989-08-13 10:19:24
- Xmcpstr.3 1.2 1989-05-18 10:56:17
- Xmcpstr.c 1.4 1989-08-13 15:27:43
- Xmemcmp.c 1.1 1989-08-15 18:17:12
- Xmfclose.c 1.3 1989-08-13 14:53:25
- Xmfcopy.3 1.1 1989-08-13 15:45:31
- Xmfcopy.c 1.4 1989-08-13 15:37:56
- Xmfflush.c 1.4 1989-08-13 14:59:43
- Xmfopen.c 1.5 1989-08-13 15:07:38
- Xmfseek.c 1.4 1989-08-13 15:18:44
- Xmk-cc-lims.b 1.6 1989-09-21 19:22:19
- Xmk-reg.b 1.4 1989-09-20 12:21:49
- Xmk-smp.c 1.5 1989-08-15 14:25:55
- XmkAr.b 1.1 1989-09-22 13:37:21
- XmkCIncl.b 1.3 1989-09-21 19:22:21
- XmkDistI.b 1.4 1989-09-21 19:22:24
- XmkDistO.b 1.3 1989-09-21 19:22:26
- XmkFreeze.b 1.3 1989-09-20 13:40:05
- XmkInstF.b 1.3 1989-09-21 19:22:29
- XmkInstX.b 1.3 1989-09-21 19:22:32
- XmkLaTeXPS.b 1.3 1989-09-20 12:22:10
- XmkLibIncl.b 1.3 1989-09-21 19:22:34
- XmkLibcLims.b 1.8 1989-09-21 19:22:37
- XmkManPS.b 1.3 1989-09-21 19:22:39
- XmkSpellLT.b 1.2 1989-09-20 12:22:20
- XmkUncmprs.b 1.3 1989-09-21 19:22:42
- Xmopenp.3 1.1 1989-08-13 16:20:15
- Xmopenp.c 1.6 1989-09-21 07:43:04
- Xmra2d.c 1.5 1989-08-12 10:43:12
- Xmra2i.c 1.5 1989-08-13 07:35:40
- Xmra2l.c 1.2 1989-08-13 08:05:51
- Xmra2u.c 1.4 1989-08-13 07:46:02
- Xmra2ul.c 1.2 1989-08-13 08:20:50
- Xmsgfn.3 1.2 1989-08-21 08:37:19
- Xmsgfn.c 1.2 1989-08-19 10:19:10
- Xnew-1.b 1.2 1989-09-21 12:39:49
- Xnew-3.b 1.1 1989-09-21 12:44:29
- Xnew-Make.b 1.2 1989-09-23 15:24:04
- Xnew-MakeC.b 1.1 1989-09-21 12:48:58
- Xnew-b.b 1.2 1989-09-23 13:49:12
- Xnew-bib.b 1.1 1989-09-21 11:03:58
- Xnew-c.b 1.1 1989-09-21 18:32:17
- Xnew-el.b 1.1 1989-09-21 18:19:01
- Xnew-h.b 1.1 1989-09-21 18:25:40
- Xnew-uMake.b 1.1 1989-09-21 18:14:52
- Xnew.1 1.2 1989-09-22 07:24:33
- Xnew.b 1.1 1989-09-21 08:00:39
- Xport.h 1.30 1989-08-29 08:52:40
- Xprefix.3 1.4 1989-08-19 10:38:38
- Xprefix.c 1.5 1989-08-13 16:55:44
- Xprefxi.c 1.1 1989-08-19 10:31:17
- Xputspn.3 1.9 1989-08-14 09:07:40
- Xputspn.c 1.10 1989-08-13 16:31:09
- Xqrndu.3 1.1 1989-08-14 10:46:02
- Xqrndu.c 1.7 1989-08-14 10:41:31
- Xsmp.3 1.3 1989-08-15 14:53:10
- Xsmp.h 1.2 1989-08-15 14:31:10
- Xsmp2l.c 1.9 1989-08-14 18:20:04
- Xsmp2u.c 1.2 1989-08-14 18:29:32
- Xsmp2ul.c 1.7 1989-08-15 11:14:04
- Xsmpdig.c 1.6 1989-08-14 17:52:43
- Xsmpdtl.c 1.6 1989-08-14 17:37:31
- Xstrend.3 1.6 1989-08-14 09:31:24
- Xstrend.c 1.6 1989-08-14 09:27:31
- Xstrspn.c 1.1 1989-08-29 08:34:07
- XuMakefile 1.12 1989-09-22 13:46:53
- Xunix-lt.tex 1.1 1989-08-28 19:15:46
- Xusage.3 1.5 1989-08-14 09:23:24
- Xusage.c 1.6 1989-08-14 09:18:44
- Xusage.h 1.1 1988-08-21 09:02:44
- Xuserfn.3 1.1 1989-08-20 11:39:55
- Xuserfn.c 1.2 1989-08-20 11:30:07
- Xversion.h 1.3 1989-03-17 15:33:37
- Xyear.h 1.2 1989-08-14 09:54:12
- Xyrwk.3 1.2 1989-08-14 10:09:58
- Xyrwk.c 1.5 1989-08-14 10:01:11
- END_OF_FILE
- if test 5524 -ne `wc -c <'FREEZE'`; then
- echo shar: \"'FREEZE'\" unpacked with wrong size!
- fi
- # end of 'FREEZE'
- fi
- if test -f 'Makefile' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'Makefile'\"
- else
- echo shar: Extracting \"'Makefile'\" \(6702 characters\)
- sed "s/^X//" >'Makefile' <<'END_OF_FILE'
- X# Makefile - main GNU make file for -lhoward and include/howard
- X#
- X# $Header: Makefile,v 1.24 89/09/23 15:23:28 howard Exp $
- X#
- X# Copyright 1989 Howard Lee Gayle
- X# This file is written in the ISO 8859/1 character set.
- X#
- X# This program is free software; you can redistribute it and/or modify
- X# it under the terms of the GNU General Public License version 1,
- X# as published by the Free Software Foundation.
- X#
- X# This program is distributed in the hope that it will be useful,
- X# but WITHOUT ANY WARRANTY; without even the implied warranty of
- X# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X# GNU General Public License for more details.
- X#
- X# You should have received a copy of the GNU General Public License
- X# along with this program; if not, write to the Free Software
- X# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X
- Xinclude MakeCommon
- X
- X# Commands:
- X
- X# Make library.
- XAR=mkAr
- X
- X# Put a file into the distribution directory.
- XDISTO=mkDistO
- X
- X# Install a non-executable file.
- XINSTF=mkInstF
- X
- X# Make a shared library.
- XLD=ld
- X
- X# Lint command.
- XLINT=lint
- X
- X# shar command
- XSHAR=makekit
- X
- X
- X# Command options:
- X
- X# CC: max optimization
- XCFLAGS=-O4
- X
- X# LINT: check everything
- XLINTFLAGS=-abchux
- X
- X# CC: for testing, use -g option and static linking.
- XTESTCFLAGS=-g -Bstatic
- X
- X# CC: for testing, compile with this library.
- XLIBES=-lhoward
- X
- X# CC: library search path for testing.
- XLIBPATH=-L/usr/local/free-dist/howard/1/work
- X
- X# Directories:
- X
- X# Install library here.
- XAID=/usr/local/free/howard/1
- X
- X# Install Bourne shell files here.
- XBID=../bin
- X
- X# Install include files here.
- XHID=../include/howard
- X
- X# Install lint library here.
- XLNID=/usr/local/free/howard/1
- X
- X# Install man entries here.
- XMID=../man
- X
- X# Install shared library here.
- XSLID=/usr/local/free/howard/1
- X
- X# Install TeX and LaTeX macro files here.
- XTEXID=../tex
- X
- X
- X# Sources:
- X
- X# Bourne shell files.
- XBS := $(filter %.b,$(SRCS))
- X
- X# BibTeX bibliography file.
- XBIBS := $(filter %.bib,$(SRCS))
- X
- X# BibTeX bibliography file.
- XBIBS := $(filter %.bib,$(SRCS))
- X
- X# C programs.
- XCS := $(shell $(SETS) $(filter %.c,$(SRCS)) -d $(SCS))
- X
- X# C include files.
- XHS := $(filter %.h,$(SRCS))
- X
- X# LaTeX source.
- XLATEXS := hetero.tex
- X
- X# Manuals.
- XM1S := $(filter %.1,$(SRCS))
- XM3S := $(filter %.3,$(SRCS))
- Xms := $(M1S) $(M3S)
- X
- X# TeX and LaTeX macro files.
- XTEXS := $(shell $(SETS) $(filter %.tex,$(SRCS)) -d $(LATEXS))
- X
- X# All ordinary source files. Removed by make clobber.
- Xsrc := $(SBS) $(BS) $(BIBS) $(SCS) $(CS) $(HS) $(LATEXS) $(ms) $(TEXS)
- X
- X# Absolutely all source files.
- Xallsrc := README LICENSE FREEZE MakeCommon Makefile uMakefile $(src)
- X
- X
- X# Targets:
- X
- X# Library.
- XAT = libhoward.a
- X
- X# Bourne shell files.
- Xbt := $(subst .b,,$(BS))
- X
- X# LaTeX.
- Xifdef FMTLATEX
- Xlatext := $(subst .tex,.texf,$(LATEXS))
- Xspellt := $(patsubst %.tex,%-s,$(LATEXS))#Phony targets for spelling checking.
- Xendif
- X
- X# Lint library.
- XLNT = llib-lhoward.ln
- X
- X# Phony lint targets for C functions.
- Xlt := $(patsubst %.c,%-l,$(SCS) $(CS))
- X
- X# C function object files.
- Xot := $(subst .c,.o,$(CS))
- X
- X# Assembler targets for C functions.
- Xst :=$(subst .c,.s,$(CS))
- X
- X# Test drivers for C functions.
- Xtt :=$(patsubst %.c,%-t,$(CS))
- X
- X# Formatted manual entries.
- Xifdef FMTMAN
- Xft := $(patsubst %,%.f,$(ms))
- Xendif
- X
- X# Default targets.
- Xtargets := $(LNT) $(ot) $(AT) $(SLT) $(ft) $(TEXS)
- X
- X# Distribution:
- Xdist := $(patsubst %,$(DD)/%,$(allsrc) $(ft))
- X
- X
- X# Installs:
- X
- X# Library.
- Xai := $(AID)/$(AT)
- X
- X# Bourne shell files.
- Xbi := $(patsubst %,$(BID)/%,$(bt))
- X
- X# On-line manual entries.
- Xcati := $(patsubst %,$(MID)/cat1/%,$(M1S)) $(patsubst %,$(MID)/cat3/%,$(M3S))
- X
- X# Include files.
- Xhi := $(patsubst %,$(HID)/%,$(HS))
- X
- X# Generated include files.
- Xii := $(patsubst %,$(HID)/%,$(it))
- X
- X# Lint library.
- Xlni := $(LNID)/$(LNT)
- X
- X# Manual entries.
- Xm1i := $(patsubst %,$(MID)/man1/%,$(M1S))
- Xm3i := $(patsubst %,$(MID)/man3/%,$(M3S))
- Xmi := $(m1i) $(m3i)
- X
- X# Shared library.
- Xsli := $(SLID)/$(SLT)
- X
- X# TeX and LaTeX macro files.
- Xtexi := $(patsubst %,$(TEXID)/%,$(TEXS))
- X
- X# If making a shared library then compile with -pic option for
- X# position-independent code.
- Xifdef SLT
- XPIC = -pic
- Xendif
- X
- X# Don't use built-in rules.
- X.SUFFIXES:
- X.PHONY: clean clobber default dist install install-include \
- X shar test vars $(lt)
- X
- Xdefault: $(targets)
- X
- X# Display values of various variables. Mostly for debugging.
- Xvars:
- X @$(ECHO) 'SRCS:' $(SRCS)
- X @$(ECHO) 'INCLUDES:' $(INCLUDES)
- X @$(ECHO) 'BS:' $(BS)
- X @$(ECHO) 'CS:' $(CS)
- X @$(ECHO) 'HS:' $(HS)
- X @$(ECHO) 'M1S:' $(M1S)
- X @$(ECHO) 'M3S:' $(M3S)
- X @$(ECHO) 'SCS:' $(SCS)
- X @$(ECHO) 'allsrc:' $(allsrc)
- X @$(ECHO) 'AT:' $(AT)
- X @$(ECHO) 'bt:' $(bt)
- X @$(ECHO) 'ft:' $(ft)
- X @$(ECHO) 'HT:' $(HT)
- X @$(ECHO) 'LNT:' $(LNT)
- X @$(ECHO) 'lt:' $(lt)
- X @$(ECHO) 'ot:' $(ot)
- X @$(ECHO) 'SLT:' $(SLT)
- X @$(ECHO) 'st:' $(st)
- X @$(ECHO) 'tt:' $(tt)
- X @$(ECHO) 'cflags:' $(cflags)
- X @$(ECHO) 'dist:' $(dist)
- X @$(ECHO) 'ai:' $(ai)
- X @$(ECHO) 'bi:' $(bi)
- X @$(ECHO) 'cati:' $(cati)
- X @$(ECHO) 'hi:' $(hi)
- Xifdef FMTLATEX
- X @$(ECHO) 'LATEXS:' $(LATEXS)
- X @$(ECHO) 'BIBS:' $(BIBS)
- X @$(ECHO) 'latext:' $(latext)
- X @$(ECHO) 'spellt:' $(spellt)
- Xendif
- X @$(ECHO) 'm1i:' $(m1i)
- X @$(ECHO) 'm3i:' $(m3i)
- X @$(ECHO) 'sli:' $(sli)
- X
- Xclean:
- X $(RM) depend $(ot) $(st) $(tt)
- X
- Xclobber: clean
- X $(RM) $(src) $(targets) $(it) FREEZE FREEZE.*
- X
- X$(lt): %-l: %.c $(LNT)
- X $(LINT) $(LINTFLAGS) -DTEST $(DEFS) $(INCLUDES) $< $(LNT)
- X
- X$(AT): $(ot)
- X $(RM) $@
- X $(AR) $@ $(ot)
- X
- Xifdef FMTMAN
- X$(ft): %.f: %
- X $(RM) $@
- X $(FMTMAN) $< > $@
- Xendif
- X
- Xifdef FMTLATEX
- X$(latext): %.texf: %.tex $(BIBS)
- X $(FMTLATEX) $* $@
- X
- X$(spellt): %-s: %.tex
- X $(SPELL_LATEX) $<
- Xendif
- X
- X$(LNT): $(CS) $(HS) $(it)
- X $(LINT) -Choward $(INCLUDES) $(CS)
- X
- X$(ot): %.o: %.c
- X $(CC) -c $(CFLAGS) $(PIC) $(DEFS) $(INCLUDES) $*.c
- X
- Xifdef SLT
- X$(SLT): $(ot)
- X $(RM) $@
- X $(LD) -o $@ $(ot)
- X $(CHMOD) a=r $@
- Xendif
- X
- Xshar: $(allsrc)
- X $(RM) Part[0-9][0-9]
- X $(SHAR) $(allsrc)
- X
- Xtest: $(tt)
- X
- X$(tt): %-t: %.c $(AT) $(SLT)
- X $(CC) -o $@ $(TESTCFLAGS) -DTEST $(DEFS) $(INCLUDES) $(LIBPATH) \
- X $*.c $(LIBES)
- X
- X$(st): %.s: %.c
- X $(CC) -S $(DEFS) $(INCLUDES) $<
- X
- Xifdef WORK
- X
- Xdist: $(dist)
- X
- X$(dist): $(DD)/%: %
- X $(DISTO) $< $(DD)
- X
- X.DEFAULT:
- X $(UNCMPRS) $@
- X
- Xelse # WORK
- X
- Xinstall: install-include $(ai) $(bi) $(cati) \
- X $(lni) $(mi) $(sli) $(texi)
- X
- Xinstall-include: $(hi) $(ii)
- X
- X$(ai): $(AT)
- X $(INSTF) $(AT) $(AID)
- X
- X$(bi): $(BID)/%: %
- X $(INSTF) $< $(BID)
- X
- Xifdef SLT
- X$(sli): $(SLT)
- X $(INSTF) $(SLT) $(SLID)
- Xendif
- X
- X$(lni): $(LNT)
- X $(INSTF) $(LNT) $(LNID)
- X
- Xifdef CATMAN
- X$(cati): $(m1i) $(m3i)
- X $(CATMAN) -M $(MID) 13
- Xendif # CATMAN
- X
- X$(hi): $(HID)/%: %
- X $(INSTF) $< $(HID)
- X
- X$(ii): $(HID)/%: %
- X $(INSTF) $< $(HID)
- X
- X$(m1i): $(MID)/man1/%: %
- X $(INSTF) $< $(MID)/man1
- X
- X$(m3i): $(MID)/man3/%: %
- X $(INSTF) $< $(MID)/man3
- X
- X$(texi): $(TEXID)/%: %
- X $(INSTF) $< $(TEXID)
- X
- X$(allsrc): %: $(DD)/%
- X $(DISTI) $@ $(DD)
- X
- X.DEFAULT:
- X $(DISTI) $@ $(DD)
- X
- Xendif # WORK
- X
- Xinclude depend
- END_OF_FILE
- if test 6702 -ne `wc -c <'Makefile'`; then
- echo shar: \"'Makefile'\" unpacked with wrong size!
- fi
- # end of 'Makefile'
- fi
- if test -f 'a2l.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'a2l.c'\"
- else
- echo shar: Extracting \"'a2l.c'\" \(4667 characters\)
- sed "s/^X//" >'a2l.c' <<'END_OF_FILE'
- X/*
- X * a2l - convert Ada-syntax integer literal to long
- X */
- X
- X#ifndef lint
- Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
- X#endif lint
- X
- X/*
- X * This program is free software; you can redistribute it and/or modify
- X * it under the terms of the GNU General Public License version 1,
- X * as published by the Free Software Foundation.
- X *
- X * This program is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X * GNU General Public License for more details.
- X *
- X * You should have received a copy of the GNU General Public License
- X * along with this program; if not, write to the Free Software
- X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X */
- X
- X#include <stdio.h>
- X#include <howard/port.h>
- X#include <howard/version.h>
- X
- XMODVER ("@(#)$Header: a2l.c,v 1.12 89/08/11 13:07:15 howard Exp $");
- X
- X#include <howard/a2.h>
- X#include <howard/registers.i>
- X#include <howard/simultipre.i>
- X#include <howard/smp.h>
- X
- XPUBLIC int a2l (str, lim, synok, res, end)
- XbStrT str; /* Input string.*/
- XbStrT lim; /* Don't pass this.*/
- XboolT synok; /* Accept non-fatal syntax errors.*/
- Xlong *res; /* Points to where to store result.*/
- XbStrT *end; /* End pointer stored here.*/
- X
- X/* Function:
- X *
- X * Algorithm:
- X * a2smp() then smp2l()
- X * Returns:
- X *
- X * Notes:
- X *
- X */
- X{
- XR1 int s; /* Return code.*/
- X smpT smp; /* a2smp() stores its result here.*/
- X
- Xs = a2smp (str, lim, synok, &smp, end);
- Xif (SUCCESS == s) s = smp2l (&smp, res);
- Xreturn (s);
- X}
- X
- X#ifdef TEST
- X#include <howard/usage.h>
- X
- XMAINVER ("@(#)$Header: a2l.c,v 1.12 89/08/11 13:07:15 howard Exp $");
- XUSAGE ("integer-numeric-literal");
- X
- X#include <errno.h>
- X#include <limits.h>
- X#include <string.h>
- X#include <howard/malf.h>
- X
- XPRIVATE void t (num, str, limoff, synok, xrc, xres, xendoff)
- Xint num; /* Test number.*/
- XbStrT str; /* str argument.*/
- Xint limoff; /* Limit offset, -1 for none.*/
- XboolT synok; /* synok argument.*/
- Xint xrc; /* Expected return code.*/
- Xlong xres; /* Expected result.*/
- Xint xendoff; /* Expected end offset.*/
- X{
- Xint rc; /* Return code.*/
- Xlong res; /* Result stored here.*/
- XbStrT end; /* End string stored here.*/
- X
- Xrc = a2l (str, (limoff < 0) ? NULBSTR : str + limoff, synok, &res, &end);
- Xif (rc != xrc) PRINTF ("%d: rc %d expected %d\n", num, rc, xrc);
- Xif ((0 == rc) && (0 == xrc) && (res != xres))
- X PRINTF ("%d: res %ld expected %ld\n", num, res, xres);
- Xif (xendoff < 0) xendoff = strlen (str);
- Xif ((end - str) != xendoff)
- X PRINTF ("%d: end %s expected %s\n", num, end, str + xendoff);
- X}
- X
- XPUBLIC int main (argc, argv)
- Xint argc; /* Number of arguments.*/
- XbStrT *argv; /* Points to array of argument strings.*/
- X{
- XbStrT end; /* End of string.*/
- Xlong res; /* a2l() stores its result here.*/
- X#define L LONG_MIN
- X#define H LONG_MAX
- X
- X/*num str limoff syn rc res end */
- Xt(__LINE__,"12", -1, 0, 0, 12L, -1);
- Xt(__LINE__,"0", -1, 0, 0, 0L, -1);
- Xt(__LINE__,"1E6", -1, 0, 0, 1000000L, -1);
- Xt(__LINE__,"2#1111_1111#", -1, 0, 0, 255L, -1);
- Xt(__LINE__,"16#FF#", -1, 0, 0, 255L, -1);
- Xt(__LINE__,"016#0FF#", -1, 0, 0, 255L, -1);
- Xt(__LINE__,"16#E#E1", -1, 0, 0, 224L, -1);
- Xt(__LINE__,"2#1110_0000#", -1, 0, 0, 224L, -1);
- Xt(__LINE__,NULBSTR, 0, 0, EINVAL, 0L, 0);
- Xt(__LINE__,"0", 0, 0, EDOM, 0L, 0);
- Xt(__LINE__,"012", 1, 0, 0, 0L, 1);
- Xt(__LINE__,"_0123", 4, 0, EDOM, 12L, 0);
- Xt(__LINE__,"-2_147_483_648", -1, 0, 0,(long)LONG_MIN, -1);
- Xt(__LINE__," \t2_147_483_647",-1, 1, 0,(long)LONG_MAX, -1);
- Xt(__LINE__,"1#1111_1111#", -1, 0, EDOM, 0L, 1);
- Xt(__LINE__,"17#1#", -1, 0, EDOM, 0L, 2);
- Xt(__LINE__,"12B", -1, 1, 0, 12L, 2);
- Xt(__LINE__,"16#abcdef#e_0", -1, 0, EDOM, 0xABCDEFL, 11);
- Xt(__LINE__,"16#abcdef#.", -1, 1, 0, 0xABCDEFL, 10);
- Xt(__LINE__,"-2_147_483_649", -1, 0, ERANGE, 0L, -1);
- Xt(__LINE__,"2_147_483_648", -1, 1, ERANGE, 0L, -1);
- X
- Xif (2 != argc) usage();
- Xswitch (a2l (argv[1], NULBSTR, FALSE, &res, &end))
- X {
- X case SUCCESS:
- X PRINTF ("8#%lo#\t10#%ld#\t16#%lX#\n", res, res, res);
- X break;
- X case EINVAL:
- X PRINTF ("EINVAL %s\n", end);
- X break;
- X case EDOM:
- X PRINTF ("EDOM %s\n", end);
- X break;
- X case ERANGE:
- X PRINTF ("ERANGE %s\n", end);
- X break;
- X default:
- X PUTS ("Unexpected return");
- X break;
- X }
- Xmfflush (stdout, "Standard Output");
- Xexit (SUCCESS);
- X
- X#ifdef lint
- Xreturn (SUCCESS);
- X#endif
- X}
- X#endif
- END_OF_FILE
- if test 4667 -ne `wc -c <'a2l.c'`; then
- echo shar: \"'a2l.c'\" unpacked with wrong size!
- fi
- # end of 'a2l.c'
- fi
- if test -f 'getlic.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'getlic.c'\"
- else
- echo shar: Extracting \"'getlic.c'\" \(5666 characters\)
- sed "s/^X//" >'getlic.c' <<'END_OF_FILE'
- X/*
- X * getlic - read next line from a file, stripping comments & blank lines
- X */
- X
- X#ifndef lint
- Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
- X#endif lint
- X
- X/*
- X * This program is free software; you can redistribute it and/or modify
- X * it under the terms of the GNU General Public License version 1,
- X * as published by the Free Software Foundation.
- X *
- X * This program is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X * GNU General Public License for more details.
- X *
- X * You should have received a copy of the GNU General Public License
- X * along with this program; if not, write to the Free Software
- X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X */
- X
- X#include <stdio.h>
- X#include <howard/port.h>
- X#include <howard/version.h>
- X
- XMODVER ("@(#)$Header: getlic.c,v 1.5 89/08/09 09:46:01 howard Exp $");
- X
- X#include <howard/registers.i>
- X#include <howard/malf.h>
- X
- XPUBLIC bStrT getlic (l, ls, f, fn, ln, tw, com)
- XbStrT l; /* Points to buffer provided by caller where line
- X * will be stored.*/
- Xunsigned ls; /* Number of bytes in buffer, including terminal
- X * NUL. (No space needs to be provided for the
- X * newline since getlin removes it.)*/
- XstreamT f; /* Input stream.*/
- XbStrT fn; /* Input file name, for possible error messages.*/
- Xunsigned *ln; /* Points to where current line number is stored.
- X * getlin increments it after a successful read, and
- X * uses it for error messages.*/
- XR5 unsigned tw; /* Expand tabs into this many spaces. 0 = no expand.*/
- XR4 rcharT com; /* Character that starts comments to end of line.*/
- X
- X/* Function:
- X * Read one nonblank line. Strip comments. Handle errors.
- X * Algorithm:
- X * Read one character at a time until
- X * 1) a non-empty line is received,
- X * 2) an EOF is received, or
- X * 3) the buffer becomes full.
- X * Returns:
- X * On success, a pointer to the NUL terminator in l[].
- X * On normal EOF, NULBSTR.
- X * No return on error.
- X */
- X
- X{
- XR1 rcharT c; /* Current input character.*/
- XbStrT bp = l; /* Current position in line buffer.*/
- Xunsigned col = 0; /* Current column number (leftmost 0).*/
- XR3 boolT incom = FALSE; /* Set inside comments.*/
- XR2 boolT more = TRUE; /* Set when more to do.*/
- X
- Xif ((NULBSTR == fn) || (EOS == B(*fn))) malf1 ("getlin: No file name");
- Xif (NULBSTR == l) malf1 ("getlin %s: No line buffer", fn);
- Xif (ls < 2) malf1 ("getlin %s: Line buffer too small", fn);
- Xif (NULSTRM == f) malf1 ("getlin %s: No FILE", fn);
- Xif (((unsigned *) NULL) == ln) malf1 ("getlin %s: No line number pointer", fn);
- Xdo
- X {
- X c = getc (f);
- X if (incom)
- X {
- X switch (c)
- X {
- X case '\n':
- X if (bp == l)
- X incom = FALSE;
- X else
- X more = FALSE;
- X ++(*ln);
- X break;
- X case EOF:
- X if (ferror (f)) malf1 ("%s: %u: Read error", fn, 1 + *ln);
- X if (bp != l)
- X malf1 ("%s: %u: End of file in middle of line", fn, 1 + *ln);
- X *bp = EOS;
- X bp = NULBSTR;
- X more = FALSE;
- X break;
- X case EOS: /* NUL.*/
- X malf1 ("%s: %u: NUL in line", fn, 1 + *ln);
- X break;
- X default:
- X break;
- X }
- X }
- X else
- X {
- X switch (c)
- X {
- X case '\t':
- X if (0 == tw)
- X {
- X *bp++ = c;
- X ++col;
- X }
- X else
- X {
- X c = tw - (col % tw);
- X col += c;
- X if (col < ls)
- X while (c--)
- X *bp++ = ' ';
- X }
- X break;
- X case '\n':
- X if (bp != l)
- X {
- X --bp;
- X while ((bp >= l) && ((' ' == B(*bp)) || ('\t' == B(*bp))))
- X --bp;
- X ++bp;
- X *bp = EOS;
- X }
- X ++(*ln);
- X if (bp != l) more = FALSE;
- X break;
- X case EOF:
- X if (ferror (f)) malf1 ("%s: %u: Read error", fn, 1 + *ln);
- X if (bp != l)
- X malf1 ("%s: %u: End of file in middle of line", fn, 1 + *ln);
- X *bp = EOS;
- X bp = NULBSTR;
- X more = FALSE;
- X break;
- X case EOS: /* NUL.*/
- X malf1 ("%s: %u: NUL in line", fn, 1 + *ln);
- X break;
- X default:
- X if (c == com)
- X {
- X if (bp != l)
- X {
- X --bp;
- X while ((bp >= l) && ((' ' == B(*bp)) || ('\t' == B(*bp))))
- X --bp;
- X ++bp;
- X *bp = EOS;
- X }
- X ++incom;
- X }
- X else
- X {
- X *bp++ = c;
- X ++col;
- X }
- X break;
- X }
- X }
- X if (col >= ls) malf1 ("%s: %u: Line too long, %u max", fn, 1 + *ln, ls - 1);
- X }
- Xwhile (more);
- Xreturn (bp);
- X}
- X
- X
- X#ifdef TEST
- X/* This test driver copies stdin to stdout, stripping comments starting
- X * with the given argument.*/
- X#include <howard/usage.h>
- X
- XMAINVER ("@(#)$Header: getlic.c,v 1.5 89/08/09 09:46:01 howard Exp $");
- XUSAGE ("comment-character");
- X
- XPUBLIC int main (argc, argv)
- Xint argc; /* Number of arguments.*/
- XbStrT *argv; /* Points to array of argument strings.*/
- X{
- Xunsigned ln = 0;
- Xstatic byteT l[1024];
- X
- Xif ((2 != argc) || (EOS != argv[1][1])) usage();
- Xwhile (NULBSTR != getlic (l, 1024, stdin, "Standard Input", &ln, 8,
- X argv[1][0]))
- X PUTS (l);
- X}
- X#endif
- END_OF_FILE
- if test 5666 -ne `wc -c <'getlic.c'`; then
- echo shar: \"'getlic.c'\" unpacked with wrong size!
- fi
- # end of 'getlic.c'
- fi
- if test -f 'malf.3' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'malf.3'\"
- else
- echo shar: Extracting \"'malf.3'\" \(4916 characters\)
- sed "s/^X//" >'malf.3' <<'END_OF_FILE'
- X.\" @(#)$Header: malf.3,v 1.11 89/08/14 09:06:30 howard Exp $
- X.TH MALF "3 -lhoward" "$Revision: 1.11 $" "Howard\'s C library" "Howard\'s C library"
- X.SH NAME
- Xmalf, malf0, malf1, mcalloc, mfclose, mfflush, mfopen, mfseek \- write error message
- X.SH SYNOPSIS
- X.nf
- X.BR "#include <" stdio.h ">"
- X.BR "#include <" howard/port.h ">"
- X.BR "#include <" howard/version.h ">"
- X.LP
- X.RI "MAINVER (" version ");"
- X.LP
- X.BR "#include <" howard/malf.h ">"
- X.fi
- X.LP
- X.BR "void " "malf ("
- X.IR exitcode ", " format "[, " arg ".\|.\|.])"
- X.nf
- X.BI "int " exitcode ";"
- X.RI "cStrT " format ";"
- X.fi
- X.LP
- X.BR "void " "malf0 ("
- X.IR format "[, " arg ".\|.\|.])"
- X.nf
- X.RI "cStrT " format ";"
- X.fi
- X.LP
- X.BR "void " "malf1 ("
- X.IR format "[, " arg ".\|.\|.])"
- X.nf
- X.RI "cStrT " format ";"
- X.fi
- X.LP
- XvoidPT mcalloc (
- X.IR nelem ,
- X.IR elsize ,
- X.IR what )
- X.nf
- X.BI "unsigned " nelem;
- X.BI "unsigned " elsize;
- X.RI "bStrT " what;
- X.fi
- X.LP
- X.BR "void " "mfclose ("
- X.IR stream ", " filename ")"
- X.nf
- X.RI "streamT " stream ";"
- X.RI "bStrT " filename ";"
- X.fi
- X.LP
- X.BR "void " "mfflush ("
- X.IR stream ", " filename ")"
- X.nf
- X.RI "streamT " stream ";"
- X.RI "bStrT " filename ";"
- X.fi
- X.LP
- X.RI "streamT mfopen (" filename ", " type ")"
- X.nf
- X.RI "bStrT " filename ";"
- X.RI "bStrT " type ";"
- X.fi
- X.LP
- X.BR "void " "mfseek ("
- X.IR stream ,
- X.IR offset ,
- X.IR ptrname ,
- X.IR filename )
- X.nf
- X.RI "streamT " stream ";"
- X.BI "long " offset;
- X.BI "int " ptrname;
- X.RI "bStrT " filename ";"
- X.fi
- X.SH COPYRIGHT
- XCopyright \(co 1989 Howard Lee Gayle
- X.SH DESCRIPTION
- X.I Malf
- Xwrites on standard error a message with the syntax:
- X.nf
- X <type> message at <time>
- X from: <program>
- X <message>
- X System message <error number>: <error text>
- X.fi
- XIf standard error is a terminal,
- Xthen the first three lines of the message are abridged to:
- X.nf
- X <type>: <program>: <message>
- X.fi
- XThe message fields are:
- X.nr xx (\w'error number'u+2n)/1n
- X.TP \n(xx
- X.I type
- X"Warning" if
- X.I exitcode
- Xis zero, otherwise "Error."
- X.TP
- X.I time
- XThe date and time
- X.I malf
- Xis called.
- X.TP
- X.I program
- XThe name of the program,
- Xwritten by
- X.IR putspn (3).
- X.TP
- X.P message
- XThe result of passing the format string and any arguments
- Xto
- X.I [v]fprintf.
- X.TP
- X.I "error number"
- XThe decimal value of the system global
- X.IR errno ";"
- Xthe
- X"System message" line is printed only when
- X.I errno
- Xis nonzero.
- X.TP
- X.I "error text"
- XThe text corresponding to errno, if it exists.
- X.PP
- X.I malf0
- Xis identical to
- X.I malf
- Xwith a first argument of zero.
- X.I malf1
- Xis identical to
- X.I malf
- Xwith a first argument of one.
- X.PP
- X.I mcalloc
- X.RI ( nelem ,
- X.IR elsize ,
- X.IR what )
- Xcalls
- X.I calloc
- X.RI ( nelem ,
- X.IR elsize ).
- XOn error, it calls
- X.I malf1
- Xusing
- X.I what
- Xin the error message to identify what could not be allocated.
- X.PP
- X.I mfclose
- X.RI ( stream ", " filename ")"
- Xcalls
- X.I fclose
- X.RI ( stream ).
- XOn error, it calls
- X.I malf1
- Xusing
- X.I filename
- Xin the error message.
- X.PP
- X.I mfflush
- X.RI ( stream ", " filename ")"
- Xcalls
- X.I fflush
- X.RI ( stream ).
- XOn error, it calls
- X.I malf1
- Xusing
- X.I filename
- Xin the error message.
- X.PP
- X.I mfopen
- Xis equivalent to
- X.IR fopen (3),
- Xexcept that it calls
- X.I malf1
- Xon error.
- X.PP
- X.I mfseek
- X.RI ( stream ,
- X.IR offset ,
- X.IR ptrname ,
- X.IR filename )
- Xcalls
- X.I fseek
- X.RI ( stream ,
- X.IR offset ,
- X.IR ptrname ).
- XOn error, it calls
- X.I malf1
- Xusing
- X.I filename
- Xin the error message.
- X.SH RETURNS
- XIf
- X.I exitcode
- Xis nonzero, then
- X.I malf
- Xdoes not return but terminates the program.
- XIf the global Boolean variable _debug is TRUE,
- X.I malf
- Xterminates by calling
- X.IR abort (2),
- Xwhich causes a core dump.
- XOtherwise,
- X.I malf
- Xpasses
- X.I exitcode
- Xto
- X.IR exit (2).
- X.PP
- XIf
- X.I exitcode
- Xis zero, then
- X.I malf
- Xzeros
- X.I errno
- Xbefore it returns.
- X.SH EXAMPLE
- X.nf
- X if (unlink (f)) malf (2, "%s: Can not unlink", f);
- X.fi
- X.SH "SEE ALSO"
- X.IR rcs (1),
- X.IR sccs (1),
- X.IR intro (2),
- X.IR abort (2),
- X.IR exit (2),
- X.IR fclose (3S),
- X.IR fflush (3S),
- X.IR fopen (3S),
- X.IR fseek (3S),
- X.IR malloc (3),
- X.IR perror (3),
- X.IR printf (3S),
- X.IR putspn "(3 \-lhoward),"
- X.IR syslog (3),
- X.IR vfprintf (3S).
- X.SH ETYMOLOGY
- XThe word "malf,"
- Xpresumably short for malfunction,
- Xoccurs in Gregory Benford's book
- X.I Across the sea of suns
- X.RI ( e.g.
- Xon page 319).
- XIt can be used as a noun or a verb.
- X.SH LICENSE
- XThis program is free software; you can redistribute it and/or modify
- Xit under the terms of the GNU General Public License version 1,
- Xas published by the Free Software Foundation.
- X.PP
- XThis program is distributed in the hope that it will be useful,
- Xbut WITHOUT ANY WARRANTY; without even the implied warranty of
- XMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- XGNU General Public License for more details.
- X.PP
- XYou should have received a copy of the GNU General Public License
- Xalong with this program; if not, write to the Free Software
- XFoundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X.SH AUTHOR
- XHoward Gayle,
- XTN/ETX/T/BG,
- XEricsson Telecom AB,
- XS-126 25 Stockholm,
- XSweden,
- Xhoward@ericsson.se,
- Xuunet!ericsson.se!howard,
- XPhone: +46 8 719 5565,
- XFAX: +46 8 719 9598,
- XTelex: 14910 ERIC S
- END_OF_FILE
- if test 4916 -ne `wc -c <'malf.3'`; then
- echo shar: \"'malf.3'\" unpacked with wrong size!
- fi
- # end of 'malf.3'
- fi
- if test -f 'mk-smp.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'mk-smp.c'\"
- else
- echo shar: Extracting \"'mk-smp.c'\" \(6522 characters\)
- sed "s/^X//" >'mk-smp.c' <<'END_OF_FILE'
- X/*
- X * mk-smp - make simultipre.i include file for SMP
- X */
- X
- X#ifndef lint
- Xstatic char _cpyrgt[] = "Copyright 1989 Howard Lee Gayle";
- X#endif lint
- X
- X/*
- X * This program is free software; you can redistribute it and/or modify
- X * it under the terms of the GNU General Public License version 1,
- X * as published by the Free Software Foundation.
- X *
- X * This program is distributed in the hope that it will be useful,
- X * but WITHOUT ANY WARRANTY; without even the implied warranty of
- X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X * GNU General Public License for more details.
- X *
- X * You should have received a copy of the GNU General Public License
- X * along with this program; if not, write to the Free Software
- X * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X */
- X
- X#include <stdio.h>
- X#include <limits.h>
- X#include <string.h>
- X
- X/* clbs - compute bits needed to hold octal representation of integer */
- X
- Xint clbs (s)
- Xchar *s; /* String holding octal representation of number.*/
- X
- X/* Function:
- X * Compute ceiling (log2 (n)), where log2 is log to base 2, and n
- X * is a non-negative integer whose octal string representation is in s.
- X * Algorithm:
- X * Count the digits. The first requires a switch to see if it's
- X * 1, 2, or 3 bits.
- X * Returns:
- X * Number of bits to hold n.
- X * Notes:
- X * 1) Assumes no leading digits.
- X * 2) s would normally be the result of a sprintf().
- X * 3) What a hack! But it really works.
- X */
- X{
- Xint i = 3 * strlen (s);
- X
- Xswitch (*s)
- X {
- X case '1':
- X return (i - 2);
- X case '2':
- X case '3':
- X return (i - 1);
- X case '4':
- X case '5':
- X case '6':
- X case '7':
- X return (i);
- X default:
- X fprintf (stderr, "mk-smp: clbs: impossible input %s", s);
- X exit (1);
- X }
- X/*NOTREACHED*/
- X}
- X
- X/* main - main function */
- X
- Xint main ()
- X
- X/* Function:
- X *
- X * Algorithm:
- X * Compute the bits needed to repesent the maximum long (clbl),
- X * unsigned (clbu), and unsigned long (clbul). Each SMP element
- X * is an unsigned. The number of useable bits in an element (eb) is
- X * thus clbu minus the number of bits for SMPRDX minus one guard
- X * bit. The number of elements to hold a long is ceiling (clbl/eb).
- X * SMPLMIN is the SMP representation of the most negative long.
- X * On a two's complement machine, this is just 1 followed by the
- X * right number of zeros. Otherwise, it is generated by breaking
- X * apart LONG_MAX.
- X * Notes:
- X * 1) The Makefile should define SMPRDX to be the maximum radix
- X * argument to smpdig().
- X * 2) If the number of elements for all types is 2, and clbu is even,
- X * then eb is special-cased to half of clbu for esthetic reasons.
- X * 3) This code should even work on a sign-magnitude machine, if there
- X * are any.
- X */
- X
- X{
- Xint clbl; /* ceil (log2 (LONG_MAX)).*/
- Xint clbr; /* ceil (log2 (SMPRDX^%)).*/
- Xint clbu; /* ceil (log2 (UINT_MAX)).*/
- Xint clbul; /* ceil (log2 (ULONG_MAX)).*/
- Xint eb; /* SMPEB, the number of bits used in each element.*/
- Xint i; /* Counter.*/
- Xlong l; /* Used to generate SMPLMIN.*/
- Xint lhb; /* SMPLHB.*/
- Xunsigned mask = 1; /* SMPMASK.*/
- Xint mhb; /* SMPMHB.*/
- Xint nel; /* SMPNEL.*/
- Xint nl; /* SMPNL.*/
- Xint nul; /* SMPNUL.*/
- Xint ulhb; /* SMPULHB.*/
- Xint nu; /* SMPNU.*/
- Xint uhb; /* SMPUHB.*/
- Xchar b[(256 / 3) + 2]; /* Output buffer for sprintf (3).*/
- X
- Xsprintf (b, "%o", UINT_MAX);
- Xclbu = clbs (b);
- Xif (clbu < 3)
- X {
- X fprintf (stderr, "Unsigned ints are only %d bits!", clbu);
- X exit (1);
- X }
- Xif (SMPRDX < 10)
- X {
- X fprintf (stderr, "SMPRDX is only %d!", SMPRDX);
- X exit (1);
- X }
- Xsprintf (b, "%o", SMPRDX);
- Xclbr = clbs (b);
- Xsprintf (b, "%lo", LONG_MAX);
- Xclbl = 1 + clbs (b); /* Add 1 bit for sign bit.*/
- Xsprintf (b, "%lo", ULONG_MAX);
- Xclbul = clbs (b);
- Xeb = clbu - clbr - 1;
- Xif (eb < 1)
- X {
- X fprintf (stderr,
- X "Unsigned ints are only %d bits, so SMPRDX can be at most %d\n",
- X clbu, 1 << (clbu - 2));
- X exit (1);
- X }
- Xnl = (clbl + eb - 1) / eb;
- Xnu = 2;
- Xnul = (clbul + eb - 1) / eb;
- Xnel = ((nl > nul) ? nl : nul);
- Xif ((2 == nl) && (2 == nu) && (2 == nul) &&
- X (0 == (clbu % 2)) && ((clbu / 2) >= (clbr + 1)))
- X eb = clbu / 2;
- Xmask = (mask << eb) - 1;
- Xlhb = clbl - 1 - (nel - 1) * eb;
- Xuhb = clbu - (nel - 1) * eb;
- Xulhb = clbul - (nel - 1) * eb;
- Xmhb = ((lhb > ulhb) ? lhb : ulhb);
- Xputs ("/*");
- Xputs (" * simultipre.i - Macros for simple multiple precision (SMP) system");
- Xputs (" *");
- Xputs (" * This file was generated automatically by:");
- Xputs (" *\t$Header: mk-smp.c,v 1.5 89/08/15 14:25:55 howard Exp $");
- Xputs (" *");
- Xprintf (" * Longs need %d bits.\n", clbl);
- Xprintf (" * Unsigned longs need %d bits.\n", clbul);
- Xprintf (" * Unsigned ints need %d bits.\n", clbu);
- Xprintf (" * This is %sa two's complement machine.\n",
- X ((- LONG_MAX) == LONG_MIN) ? "not " : "");
- Xputs (" */");
- Xputchar ('\n');
- Xprintf (
- X "#define SMPRDX %6d /* Maximum radix of number to convert to SMP.*/\n",
- X SMPRDX);
- Xprintf ("#define SMPEB %6d /* Number of bits in one SMP element.*/\n", eb);
- Xprintf ("#define SMPMASK 0x%X /* Mask off SMPEB bits.*/\n", mask);
- Xprintf ("#define SMPMHB %6d /* Number of bits in high order SMP element.*/\n",
- X mhb);
- Xprintf ("#define SMPNEL %6d /* Number of SMP elements to make one SMP.*/\n",
- X nel);
- Xprintf ("#define SMPNL %6d /* Number of SMP elements for a long.*/\n", nl);
- Xprintf (
- X "#define SMPLHB %6d /* Number of bits in high order long element.*/\n",
- X lhb);
- Xprintf ("#define SMPLMIN {");
- X
- Xif ((- LONG_MAX) == LONG_MIN)
- X { /* Not two's complement.*/
- X l = LONG_MAX;
- X for (i = nel; 0 != i; --i)
- X {
- X printf ("0x%lX, ", l & mask);
- X l >>= eb;
- X }
- X }
- Xelse
- X { /* Two's complement.*/
- X for (i = nel - 1; 0 != i; --i)
- X printf ("0, ");
- X printf ("0x%X, ", 1 << lhb);
- X }
- Xputs ("1} /* SMP for LONG_MIN.*/");
- Xprintf ("#define SMPNU %6d /* Number of SMP elements for unsigned int.*/\n",
- X nu);
- Xprintf (
- X"#define SMPUHB %6d /* Number of bits in high order unsigned int element.*/\n",
- X uhb);
- Xprintf ("#define SMPNUL %6d /* Number of SMP elements for unsigned long.*/\n",
- X nul);
- Xprintf (
- X"#define SMPULHB %6d /* Number of bits in high order unsigned long element.*/\n",
- X ulhb);
- X
- Xfflush (stdout);
- Xexit (0);
- X
- X#ifdef lint
- Xreturn (0);
- X#endif
- X}
- END_OF_FILE
- if test 6522 -ne `wc -c <'mk-smp.c'`; then
- echo shar: \"'mk-smp.c'\" unpacked with wrong size!
- fi
- # end of 'mk-smp.c'
- fi
- if test -f 'new-Make.b' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'new-Make.b'\"
- else
- echo shar: Extracting \"'new-Make.b'\" \(6860 characters\)
- sed "s/^X//" >'new-Make.b' <<'END_OF_FILE'
- X
- X# new-Make.b - create a new Makefile from a prototype
- X#
- X# $Header: new-Make.b,v 1.2 89/09/23 15:24:04 howard Exp $
- X#
- X# Copyright 1989 Howard Lee Gayle
- X# This file is written in the ISO 8859/1 character set.
- X#
- X# This program is free software; you can redistribute it and/or modify
- X# it under the terms of the GNU General Public License version 1,
- X# as published by the Free Software Foundation.
- X#
- X# This program is distributed in the hope that it will be useful,
- X# but WITHOUT ANY WARRANTY; without even the implied warranty of
- X# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- X# GNU General Public License for more details.
- X#
- X# You should have received a copy of the GNU General Public License
- X# along with this program; if not, write to the Free Software
- X# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- X#
- X# Shell variables:
- X# c - '#'
- X# d - '$'
- X# f - steps through files to create
- X# u - usage string
- X
- XCMDNAME=new-Make
- Xexport CMDNAME
- Xu="Usage: $CMDNAME file..."
- Xif [ $# -eq 0 ]
- Xthen
- X echo "$u" 1>&2
- X exit 1
- Xfi
- Xc='#'
- Xd='$'
- Xfor f
- Xdo
- X cat << EOF > "$f"
- X$c $f - main GNU makefile for ~
- X$c
- X$c ${d}Header$d
- X$c
- XEOF
- X if [ "$NEWTEXTPATH" ]
- X then
- X cat-path "$NEWTEXTPATH" new.txt | sed -e "s;^;$c ;" >> "$f"
- X fi
- X cat << 'EOF' >> "$f"
- X
- Xinclude MakeCommon
- X
- X# Commands:
- X
- X# Copy stdin to stdout.
- XCAT=cat
- X
- X# Put a file into the distribution directory.
- XDISTO=mkDistO
- X
- X# Echo arguments.
- XECHO=echo
- X
- X# Elisp compiler.
- XELCMP=emacs -batch -q -f batch-byte-compile
- X
- X# Install a non-executable file.
- XINSTF=mkInstF
- X
- X# Install an executable file.
- XINSTX=mkInstX
- X
- X# Lint command.
- XLINT=lint
- X
- X# Make shar files.
- XSHAR=trshar shar
- X
- X
- X# Command options:
- X
- X# Set commands at start of Bourne shell files, usually absolute paths.
- XBDEFS=
- X
- X# C compiler options.
- XCFLAGS=-O4
- X
- X# C library search path.
- XLIBPATH=-L/usr/local/free/howard/0
- X
- X# C libraries to link in.
- XLIBES=-lhoward
- X
- X# Options to lint.
- XLINTFLAGS=-abchux
- X
- X# Lint libraries.
- XLL=/usr/local/free/howard/0/llib-howard.ln
- X
- X
- X# Directories:
- X
- X# Install Bourne shell files here.
- XBID=../bin
- X
- X# Install C executables here.
- XCID=../bin
- X
- X# Install compiled elisp here.
- XELID=../el
- X
- X# Install man entries here.
- XMID=../man
- X
- X
- X# Sources. Comment out all that don't apply.
- X
- X# Bourne shell files.
- XBS := $(filter %.b,$(SRCS))
- X
- X# BibTeX bibliography file.
- XBIBS := $(filter %.bib,$(SRCS))
- X
- X# C programs.
- XCS := $(filter %.c,$(SRCS))
- X
- X# Elisp source.
- XELS := $(filter %.el,$(SRCS))
- X
- X# C include files.
- XHS := $(filter %.h,$(SRCS))
- X
- X# LaTeX source.
- XLATEXS := $(filter %.tex,$(SRCS))
- X
- X# Manuals.
- XM1S := $(filter %.1,$(SRCS))# Section 1.
- XM5S := $(filter %.5,$(SRCS))# Section 5.
- XM8S := $(filter %.8,$(SRCS))# Section 8.
- Xms := $(M1S) $(M5S) $(M8S)# All sections.
- X
- X# All ordinary source files. Removed by make clobber.
- Xsrc := $(BS) $(BIBS) $(CS) $(ELS) $(HS) $(LATEXS) $(ms)
- X
- X# Absolutely all source files.
- Xallsrc := README LICENSE FREEZE MakeCommon Makefile uMakefile $(src)
- X
- X
- X# Targets and installs:
- X
- X# Bourne shell files.
- Xifdef BS
- Xbt := $(subst .b,,$(BS))
- Xbi := $(patsubst %,$(BID)/%,$(bt))
- Xendif
- X
- X# C programs.
- Xifdef CS
- Xct := $(subst .c,,$(CS))
- Xci := $(patsubst %,$(CID)/%,$(ct))
- Xlt := $(patsubst %.c,%-l,$(CS))# Phony lint targets for C programs.
- Xst := $(subst .c,.s,$(CS))# Assembler targets for C programs.
- Xendif
- X
- X# Compiled elisp.
- Xifdef ELS
- Xelt := $(subst .el,.elc,$(ELS))
- Xeli := $(patsubst %,$(ELID)/%,$(elt))
- Xendif
- X
- X# LaTeX.
- Xifdef FMTLATEX
- Xlatext := $(subst .tex,.texf,$(LATEXS))
- Xspellt := $(patsubst %.tex,%-s,$(LATEXS))#Phony targets for spelling checking.
- Xendif
- X
- X# Manual entries.
- Xifdef M1S
- Xcat1i := $(patsubst %,$(MID)/cat1/%,$(M1S))
- Xm1i := $(patsubst %,$(MID)/man1/%,$(M1S))
- Xendif
- Xifdef M5S
- Xcat5i := $(patsubst %,$(MID)/cat5/%,$(M5S))
- Xm5i := $(patsubst %,$(MID)/man5/%,$(M5S))
- Xendif
- Xifdef M8S
- Xcat8i := $(patsubst %,$(MID)/cat8/%,$(M8S))
- Xm8i := $(patsubst %,$(MID)/man8/%,$(M8S))
- Xendif
- Xcati := $(cat1i) $(cat5i) $(cat8i)
- Xmi := $(m1i) $(m5i) $(m8i)
- X
- Xifdef FMTMAN
- Xft := $(patsubst %,%.f,$(ms))#Formatted manual entries, e.g. PostScript.
- Xendif
- X
- Xtargets := $(bt) $(ct) $(elt) $(ft) $(latext)
- X
- X# Distribution:
- Xdist := $(patsubst %,$(DD)/%,$(allsrc) $(ft) $(latext))
- X
- X# Don't use built-in rules.
- X.SUFFIXES:
- X.PHONY: clean clobber default dist install shar vars $(lt) $(spellt)
- X
- Xdefault: $(targets)
- X
- X# Display values of various variables. Mostly for debugging.
- Xvars:
- X @$(ECHO) 'SRCS:' $(SRCS)
- Xifdef BS
- X @$(ECHO) 'BS:' $(BS)
- X @$(ECHO) 'bt:' $(bt)
- X @$(ECHO) 'bi:' $(bi)
- Xendif
- Xifdef CS
- X @$(ECHO) 'CS:' $(CS)
- X @$(ECHO) 'ct:' $(ct)
- X @$(ECHO) 'ci:' $(ci)
- X @$(ECHO) 'lt:' $(lt)
- X @$(ECHO) 'st:' $(st)
- X @$(ECHO) 'CC:' $(CC)
- X @$(ECHO) 'CFLAGS:' $(CFLAGS)
- X @$(ECHO) 'DEFS:' $(DEFS)
- X @$(ECHO) 'LIBPATH:' $(LIBPATH)
- X @$(ECHO) 'LIBES:' $(LIBES)
- Xendif
- Xifdef ELS
- X @$(ECHO) 'ELS:' $(ELS)
- X @$(ECHO) 'elt:' $(elt)
- X @$(ECHO) 'eli:' $(eli)
- Xendif
- Xifdef HS
- X @$(ECHO) 'HS:' $(HS)
- Xendif
- Xifdef FMTLATEX
- X @$(ECHO) 'LATEXS:' $(LATEXS)
- X @$(ECHO) 'BIBS:' $(BIBS)
- X @$(ECHO) 'latext:' $(latext)
- X @$(ECHO) 'spellt:' $(spellt)
- Xendif
- Xifdef M1S
- X @$(ECHO) 'M1S:' $(M1S)
- X @$(ECHO) 'cat1i:' $(cat1i)
- X @$(ECHO) 'm1i:' $(m1i)
- Xendif
- Xifdef M5S
- X @$(ECHO) 'M5S:' $(M5S)
- X @$(ECHO) 'cat5i:' $(cat5i)
- X @$(ECHO) 'm5i:' $(m5i)
- Xendif
- Xifdef M8S
- X @$(ECHO) 'M8S:' $(M8S)
- X @$(ECHO) 'cat8i:' $(cat8i)
- X @$(ECHO) 'm8i:' $(m8i)
- Xendif
- X @$(ECHO) 'mi:' $(mi)
- Xifdef FMTMAN
- X @$(ECHO) 'ft:' $(ft)
- Xendif
- X @$(ECHO) 'allsrc:' $(allsrc)
- X @$(ECHO) 'dist:' $(dist)
- X
- Xclean:
- X -$(RM) depend $(st)
- X
- Xclobber: clean
- X -$(RM) $(src) $(targets) FREEZE FREEZE.*
- X
- Xifdef BS
- X$(bt): %: %.b
- X $(RM) $@
- X $(ECHO) ' $(BDEFS)' > $@
- X $(CAT) $< >> $@
- X $(CHMOD) +x $@
- Xendif
- X
- Xifdef CS
- X$(ct): %: %.c
- X $(CC) -o $@ $(CFLAGS) $(DEFS) $(INCLUDES) $(LIBPATH) $*.c $(LIBES)
- X
- X$(lt): %-l: %.c $(LL)
- X $(LINT) $(LINTFLAGS) $(DEFS) $(INCLUDES) $< $(LL)
- Xendif
- X
- Xifdef ELS
- X$(elt): %.elc: %.el
- X $(ELCMP) $<
- Xendif
- X
- Xifdef FMTMAN
- X$(ft): %.f: %
- X $(RM) $@
- X $(FMTMAN) $< > $@
- Xendif
- X
- Xifdef FMTLATEX
- X$(latext): %.texf: %.tex $(BIBS)
- X $(FMTLATEX) $* $@
- X
- X$(spellt): %-s: %.tex
- X $(SPELL_LATEX) $<
- Xendif
- X
- Xshar: $(allsrc)
- X $(SHAR) $(allsrc)
- X
- Xifdef CS
- X$(st): %.s: %.c
- X $(CC) -S $(DEFS) $(INCLUDES) $<
- Xendif
- X
- Xifdef WORK
- X
- Xdist: $(dist)
- X
- X$(dist): $(DD)/%: %
- X $(DISTO) $< $(DD)
- X
- X.DEFAULT:
- X $(UNCMPRS) $@
- X
- Xelse # WORK
- X
- Xinstall: $(bi) $(ci) $(cati) $(eli) $(mi)
- X
- Xifdef BS
- X$(bi): $(BID)/%: %
- X $(INSTF) $< $(BID)
- Xendif
- X
- Xifdef CS
- X$(ci): $(CID)/%: %
- X $(INSTX) $< $(CID)
- Xendif
- X
- Xifdef ELS
- X$(eli): $(ELID)/%: %
- X $(INSTF) $< $(ELID)
- Xendif
- X
- Xifdef M1S
- X$(m1i): $(MID)/man1/%: %
- X $(INSTF) $< $(MID)/man1
- X
- Xifdef CATMAN
- X$(cat1i): $(m1i)
- X $(CATMAN) -M $(MID) 1
- Xendif
- Xendif
- X
- Xifdef M5S
- X$(m5i): $(MID)/man5/%: %
- X $(INSTF) $< $(MID)/man5
- X
- Xifdef CATMAN
- X$(cat5i): $(m5i)
- X $(CATMAN) -M $(MID) 5
- Xendif
- Xendif
- X
- Xifdef M8S
- X$(m8i): $(MID)/man8/%: %
- X $(INSTF) $< $(MID)/man8
- X
- Xifdef CATMAN
- X$(cat8i): $(m8i)
- X $(CATMAN) -M $(MID) 8
- Xendif
- Xendif
- X
- X$(allsrc): %: $(DD)/%
- X $(DISTI) $@ $(DD)
- X
- X.DEFAULT:
- X $(DISTI) $@ $(DD)
- X
- Xendif # WORK
- X
- Xifdef CS
- Xinclude depend
- Xendif
- XEOF
- Xdone
- END_OF_FILE
- if test 6860 -ne `wc -c <'new-Make.b'`; then
- echo shar: \"'new-Make.b'\" unpacked with wrong size!
- fi
- # end of 'new-Make.b'
- fi
- if test -f 'strspn.c' -a "${1}" != "-c" ; then
- echo shar: Will not clobber existing file \"'strspn.c'\"
- else
- echo shar: Extracting \"'strspn.c'\" \(656 characters\)
- sed "s/^X//" >'strspn.c' <<'END_OF_FILE'
- X/*
- X * strspn - find length of initial segment of s consisting entirely
- X * of characters from accept
- X *
- X * Public domain code by Henry Spencer.
- X */
- X
- X#include <stdio.h>
- X#include <howard/port.h>
- X#include <howard/version.h>
- X
- XMODVER ("@(#)$Header: strspn.c,v 1.1 89/08/29 08:34:07 howard Exp $");
- X
- X#ifdef NOSTRSPN
- Xint
- Xstrspn(s, accept)
- X char *s;
- X char *accept;
- X{
- X register char *sscan;
- X register char *ascan;
- X register int count;
- X
- X count = 0;
- X for (sscan = s; *sscan != '\0'; sscan++) {
- X for (ascan = accept; *ascan != '\0'; ascan++)
- X if (*sscan == *ascan)
- X break;
- X if (*ascan == '\0')
- X return(count);
- X count++;
- X }
- X return(count);
- X}
- X#endif NOSTRSPN
- END_OF_FILE
- if test 656 -ne `wc -c <'strspn.c'`; then
- echo shar: \"'strspn.c'\" unpacked with wrong size!
- fi
- # end of 'strspn.c'
- fi
- echo shar: End of archive 3 \(of 9\).
- cp /dev/null ark3isdone
- MISSING=""
- for I in 1 2 3 4 5 6 7 8 9 ; do
- if test ! -f ark${I}isdone ; then
- MISSING="${MISSING} ${I}"
- fi
- done
- if test "${MISSING}" = "" ; then
- echo You have unpacked all 9 archives.
- rm -f ark[1-9]isdone ark[1-9][0-9]isdone
- else
- echo You still need to unpack the following archives:
- echo " " ${MISSING}
- fi
- ## End of shell archive.
- exit 0
-
-